#!/usr/bin/env bash


# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
#   Description: Run VSPerf tests
#   Author: Christian Trautman <ctrautma@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
#   Copyright (c) 2017 Red Hat, Inc. All rights reserved.
#
#   This copyrighted material is made available to anyone wishing
#   to use, modify, copy, or redistribute it subject to the terms
#   and conditions of the GNU General Public License version 2.
#
#   This program is distributed in the hope that it will be
#   useful, but WITHOUT ANY WARRANTY; without even the implied
#   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
#   PURPOSE. See the GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public
#   License along with this program; if not, write to the Free
#   Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
#   Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Perf-Verify settings file. This must be completed before execution of
# Perf-Verify.sh can be executed

# NIC Device names such as p6p1 p6p2
NIC1=""
NIC2=""

# PMD MASK for 2 PMDS
# A Hex mask for using one core/2HT pair and 2 core/4HT
# Example with a layout such as seen from the output of lscpu and cpu_layout.py
# cpu_layout.py can be obtained from the dpdk repository source code dpdk.org
# Architecture:          x86_64
# CPU op-mode(s):        32-bit, 64-bit
# Byte Order:            Little Endian
# CPU(s):                48
# On-line CPU(s) list:   0-47
# Thread(s) per core:    2
# Core(s) per socket:    12
# Socket(s):             2
# NUMA node(s):          2
# Vendor ID:             GenuineIntel
# CPU family:            6
# Model:                 79
# Model name:            Intel(R) Xeon(R) CPU E5-2687W v4 @ 3.00GHz
# Stepping:              1
# CPU MHz:               3000.044
# BogoMIPS:              6005.35
# Virtualization:        VT-x
# L1d cache:             32K
# L1i cache:             32K
# L2 cache:              256K
# L3 cache:              30720K
# NUMA node0 CPU(s):     0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46
# NUMA node1 CPU(s):     1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43
#
# python cpu_layout.py
# ======================================================================
# Core and Socket Information (as reported by '/sys/devices/system/cpu')
# ======================================================================
#
# cores =  [0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13]
# sockets =  [0, 1]
#
#         Socket 0        Socket 1
#         --------        --------
# Core 0  [0, 24]         [1, 25]
# Core 1  [2, 26]         [3, 27]
# Core 2  [4, 28]         [5, 29]
# Core 3  [6, 30]         [7, 31]
# Core 4  [8, 32]         [9, 33]
# Core 5  [10, 34]        [11, 35]
# Core 8  [12, 36]        [13, 37]
# Core 9  [14, 38]        [15, 39]
# Core 10 [16, 40]        [17, 41]
# Core 11 [18, 42]        [19, 43]
# Core 12 [20, 44]        [21, 45]
# Core 13 [22, 46]        [23, 47]

# To use cores 44,20 if your NIC is on Numa 0 you would use a mask of 040000040000
# To use cores 44,20 and 42,18 I would use a mask of 050000050000

PMD2MASK=""
PMD4MASK=""

# Virtual NIC Guest CPU Binding
# Using the same scripts above assign first VCPU to a single core. Then assign
# VCPU2 and VCPU3 to a core/HT pair such as 4,28. Should not be a core already
# in use by the PMD MASK. All CPU assignments should be on different
# Hyperthreads.

VCPU1=""
VCPU2=""
VCPU3=""

# Will need additional VCPUs for 2 queue test

VCPU4=""
VCPU5=""

# Based on the output above this is a sample set of settings
# NIC1="p6p1"
# NIC2="p6p2"
# PMD2MASK="040000040000"
# PMD4MASK="050000050000"
# VCPU1="2"
# VCPU2="4"
# VCPU3="28"
# VCPU4="6"
# VCPU5="30"

# TESTPMD descriptor size, can be used to modify descriptor sizes inside of VM when running TESTPMD for dpdk and kernel
# vsperf tests. SR-IOV options can be used to modify sr-iov descriptor sizes
TXD_SIZE=512
RXD_SIZE=512
SRIOV_TXD_SIZE=2048
SRIOV_RXD_SIZE=2048

# Update your Trex trafficgen info below
TRAFFICGEN_TREX_HOST_IP_ADDR=''
TRAFFICGEN_TREX_USER=''
# TRAFFICGEN_TREX_BASE_DIR is the place, where 't-rex-64' file is stored on
# Trex Server such as /root/trex-core/scripts/
# Note the trailing / in the path
TRAFFICGEN_TREX_BASE_DIR=''
# Mac addresses of the ports configured in TRex Server
TRAFFICGEN_TREX_PORT1=''
TRAFFICGEN_TREX_PORT2=''
TREX_FORCE_CUSTOM_SPEED=False
TREX_CUSTOM_SPEED=10000

#SR-IOV Information
# To run SR-IOV tests please complete the following info
# NIC Device name for VF on NIC1 and NIC2 Example p6p1_0 for vf0 on p6p1
NIC1_VF=""
NIC2_VF=""
